#include <stdio.h>
#include <fcntl.h>
#include <unistd.h>
#include <termios.h>

#define SERIAL_PORT_DEVICE "/dev/pts/2"

// 打开串口
int open_serial_port(const char *port) {
    int fd = open(port, O_RDONLY | O_NOCTTY | O_NDELAY);
    if (fd == -1) {
        perror("无法打开串口");
        return -1;
    }

    // 配置串口参数
    struct termios options;
    tcgetattr(fd, &options);
    cfsetospeed(&options, B9600); // 波特率 9600
    cfsetispeed(&options, B9600);
    options.c_cflag |= (CLOCAL | CREAD); // 本地连接和启用接收
    options.c_cflag &= ~PARENB; // 无校验位
    options.c_cflag &= ~CSTOPB; // 1 位停止位
    options.c_cflag &= ~CSIZE;
    options.c_cflag |= CS8; // 8 位数据位
    tcsetattr(fd, TCSANOW, &options);

    return fd;
}

int main() {
    int fd = open_serial_port(SERIAL_PORT_DEVICE);
    if (fd == -1) {
        return 1;
    }

    char buffer[128];
    ssize_t bytes_read = read(fd, buffer, sizeof(buffer) - 1); // 接收数据
    if (bytes_read < 0) {
        perror("接收数据失败");
        close(fd);
        return 1;
    }

    buffer[bytes_read] = '\0'; // 添加字符串结束符
    printf("已接收数据: %s\n", buffer);
    close(fd);
    return 0;
}